/*

cimahis - Software para el analisis de imagenes de corte histologico

Copyright (C) Andrés De Abreu 2010 <jadabreu @ gmail . com>


Este programa es software libre. Puede redistribuirlo y/o modificarlo bajo los términos
de la Licencia Pública General de GNU según es publicada por la Free Software Foundation,
bien de la versión 2 de dicha Licencia o bien (según su elección) de cualquier versión
posterior.

Este programa se distribuye con la esperanza de que sea útil, pero SIN NINGUNA GARANTÍA,
incluso sin la garantía MERCANTIL implícita o sin garantizar la CONVENIENCIA PARA UN
PROPÓSITO PARTICULAR. Véase la Licencia Pública General de GNU para más detalles.

Debería haber recibido una copia de la Licencia Pública General junto con este programa.
Si no ha sido así, escriba a la Free Software Foundation, Inc.,
en 675 Mass Ave, Cambridge, MA 02139, EEUU.

    //ACERCA DE ventanaparametrosfiltro.cpp
    *
    * Clase que genera la interfaz grafica que se utiliza para la modificación de
    * los parametros del filtro seleccionado previamente
    *

*/


#include "color/AplicarFiltros/ventanaparametrosfiltro.h"
#include "ui_ventanaparametrosfiltro.h"
#include <QSpinBox>


ventanaParametrosFiltro::ventanaParametrosFiltro(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::ventanaParametrosFiltro) //constructor
{
    ui->setupUi(this);
    //e=parent;
}

ventanaParametrosFiltro::~ventanaParametrosFiltro() //destructor
{
    delete ui;
}

void ventanaParametrosFiltro::changeEvent(QEvent *e) //metodo generado automaticamente por Q para controlar eventos de cambio de idioma
{
    QDialog::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

//método que se encarga de cargar los parametros que tiene el filtro que se desea modificar
void ventanaParametrosFiltro::cargarDatosFiltro(vector <int> kernel, vector <int> parametrosExtra, int nParametros, string nombre)
{

    int n = nParametros;
    QString str(nombre.c_str());
    QSpinBox *spinbox[10]; //se puede fijar una constante o nParametros en vez de 10 o cualquier otr optimizacion para crear solo los objetos necesarios

    ui->label_7->setText(str); //Titulo del filtro

    if (kernel.back()==0) //si el kernel esta en 0 se desactiva en la interfaz
    {
        ui->spinBoxKernel1->setDisabled(true);
        ui->spinBoxKernel2->setDisabled(true);
    }
    else //sino se cargan los valores correspondientes
    {
        ui->spinBoxKernel1->setValue(kernel[0]);
        ui->spinBoxKernel2->setValue(kernel[1]);
    }


    for(int i=0;i<n;i++) //aqui se cargan el valor de los parametros extra
    {
        spinbox[i] = new QSpinBox(); //creacion de los spinbox que contendran los valores
        spinbox[i]->setValue(parametrosExtra[i]);
        ui->gridLayout->addWidget(spinbox[i],0,i,0,1); //se agregan los spinbox en un grid que se mostrara en pantalla

    }


}

void ventanaParametrosFiltro::leerFiltro(filtros *filtro) //obtener el filtro que se desea modificar
{
    f=filtro;
}
void ventanaParametrosFiltro::modificarFiltro() //fijar los nuevos valores del filtro segun lo que se asigno en la interfaz
{
    f->fijarTamanoKernel(ui->spinBoxKernel1->value(),ui->spinBoxKernel2->value());
    this->hide();

}
